package com.waikuai.shop.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.waikuai.shop.entity.ProductReview;
import com.waikuai.shop.vo.ProductReviewVO;

import java.util.List;

/**
 * 商品评价服务接口
 * @author waikuai
 */
public interface ProductReviewService extends IService<ProductReview> {

    /**
     * 分页查询商品评价列表
     * @param page 分页对象
     * @param productId 商品ID
     * @param status 审核状态
     * @return 评价列表
     */
    IPage<ProductReviewVO> getReviewPage(Page<ProductReview> page, Long productId, Integer status);

    /**
     * 获取商品评价列表
     * @param productId 商品ID
     * @param status 审核状态
     * @param limit 限制数量
     * @return 评价列表
     */
    List<ProductReviewVO> getReviewsByProductId(Long productId, Integer status, Integer limit);

    /**
     * 添加商品评价
     * @param userId 用户ID
     * @param productId 商品ID
     * @param rating 评分
     * @param content 评价内容
     * @param images 评价图片
     * @return 是否成功
     */
    boolean addReview(Long userId, Long productId, Integer rating, String content, List<String> images);

    /**
     * 统计商品评价数量
     * @param productId 商品ID
     * @param status 审核状态
     * @return 评价数量
     */
    Integer countReviewsByProductId(Long productId, Integer status);

    /**
     * 计算商品平均评分
     * @param productId 商品ID
     * @param status 审核状态
     * @return 平均评分
     */
    Double calculateAverageRating(Long productId, Integer status);

    /**
     * 审核评价
     * @param reviewId 评价ID
     * @param status 审核状态
     * @return 是否成功
     */
    boolean auditReview(Long reviewId, Integer status);
}

